<?
	/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
		$this->oTmpObject = new Producto_establecimiento_frm( $this );

	class Producto_establecimiento_frm extends Frm
	{
	function setValue ( $ncProducto, $ncEstablecimiento )
		{
			$cSql = "SELECT  cMotivo
				FROM gtProductoEstablecimiento
				WHERE ncProducto = '$ncProducto' AND  ncEstablecimiento = '$ncEstablecimiento' ";
			$aDatos = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aDatos );
		}
	function Producto_establecimiento_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncProducto']				= new InputList( "Producto",  "ncProducto" );
			$this->aFields['ncFuncion']					= new InputList( "Funcion", "ncFuncion" );
			$this->aFields['Funcion']						= new InputArray ( "Funcion" );
			$this->aFields['aEstablecimientos']		= new InputCheck( "Establecimientos", "aEstablecimientos" );
			$this->aFields['aProductos']				= new InputCheck( "Productos", "aProductos" );
			$this->aFields['ncEstablecimiento']		= new InputLookUp( "Establecimiento" ,  "ncEstablecimiento" );
			$this->aFields['cMotivo']						= new InputText( "Justificacion", "cMotivo" );
			$this->aFields['ncMaduracion']			= new InputList( "Maduracion", "ncMaduracion" );

			$this->aFields['Funcion']->addInput( new InputList ( "ncFuncion" ) ) ;
			$this->aFields['Funcion']->addInput( new InputList ( "ncCategoriaEstablecimiento" ) ) ;
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 2:
					$this->aInput = array ('ncProducto','ncEstablecimiento','ncMaduracion', 'cMotivo' );
					break;
				case 3:
					if ( $this->aFields['ncProducto']->getValue()  )
					{
						$this->aInput = array ('ncProducto','ncFuncion', 'aEstablecimientos' );
					}
					if ( $this->aFields['ncEstablecimiento']->getValue()  )
					{
						$this->aInput = array ('ncEstablecimiento','aProductos' );
					}
					break;
			}
		}
	function initializeForm()
		{
			// Si viene el Ubicacion hace el retrieve
				if ( $this->isRetrievable() && $this->aFields['ncProducto']->getValue() && $this->aFields['ncEstablecimiento']->getValue() )
				{
					$this->setValue( $this->aFields['ncProducto']->getValue(), $this->aFields['ncEstablecimiento']->getValue() );
				}
			// Configura el Titulo
				$this->setLabel( "Producto - Establecimiento" );
			return true;
		}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
					case 'ncProducto':
						if ( $oField->getValue() )
						{
							$oField->setHidden();
						} else
						{
							$cSql = "SELECT ncProducto, cdProducto FROM gtProductoTuristico ORDER BY cdProducto";
							$oField->setMatrix($this->oDatabase->getMatrix($cSql));
							$oField->setMandatory($this->isMandatory());
						}
					break;
					case 'ncFuncion':
						$cSql = "SELECT ncFuncion, cdFuncion FROM gcFuncion";
						$oField->setOnChangeAutoSubmit($this);
						$oField->setMatrix($this->oDatabase->getMatrix($cSql));
					break;
					case 'Funcion':
							$cSql = "SELECT ncFuncion, cdFuncion FROM gcFuncion";
							$oField->aInput['ncFuncion']->setMatrix( $this->oDatabase->getMatrix($cSql) );
							$oField->setAutoRefresh('ncFuncion', $this);
							if ( $oField->aInput['ncFuncion']->getValue () )
							{
								$cSql = "SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento WHERE ncFuncion = "  . $oField->aInput['ncFuncion']->getValue ();
								$oField->aInput['ncCategoriaEstablecimiento']->setLanguage( 'es' );
								$oField->aInput['ncCategoriaEstablecimiento']->setMatrix( $this->oDatabase->getMatrix($cSql) );
							}
							else $oField->aInput['ncCategoriaEstablecimiento']->setHidden();
					break;
					case 'aEstablecimientos':
						$oField->setForm( $this );
						//if ( $this->aFields['Funcion']->aInput['ncFuncion']->getValue () )
						if ( $this->aFields['ncFuncion']->getValue () )
						{
							$cSql = "SELECT Est.ncEstablecimiento, Est.cdEstablecimiento
											FROM gtEstablecimiento  as Est
											JOIN gtEstablecimientoFuncion as EFu
												ON EFu.ncEstablecimiento =  Est.ncEstablecimiento
												AND EFu.ncFuncion = "  . $this->aFields['ncFuncion']->getValue () . "
											WHERE Est.bBaja = 0 ";
												//AND EFU.ncFuncion = "  . $oField->aInput['ncFuncion']->getValue () ;
							if ( $this->aFields['ncProducto']->getValue () )
								$cSql .= " AND Est.ncEstablecimiento not in (SELECT ncEstablecimiento FROM gtProductoEstablecimiento WHERE ncProducto = " . $this->aFields['ncProducto']->getValue () . ")";
						}
						$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
						$oField->setMultiple( true );
					break;
					case 'aProductos':
						$oField->setForm( $this );
						$cSql = "SELECT ncProducto, cdProducto
										FROM gtProductoTuristico WHERE ncProducto NOT IN (SELECT ncProductoPadre FROM gtProductoTuristico  where ncProductoPadre is not null )  ";
						if ( $this->aFields['ncEstablecimiento']->getValue () )
							$cSql .= " AND ncProducto not in (SELECT ncProducto FROM gtProductoEstablecimiento WHERE ncEstablecimiento = " . $this->aFields['ncEstablecimiento']->getValue () . ")";
						$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
						$oField->setMultiple( true );
					break;
					case 'ncEstablecimiento':
						if ( $oField->getValue() )
						{
							$oField->setHidden();
						} else
						{
							$oField->setForm( $this );
							initializeEstablecimiento ( &$oField );
							$oField->setMandatory($this->isMandatory());
						}
					break;
					case 'ncMaduracion':
						$cSql = "SELECT ncMaduracion, cdMaduracion FROM gcMaduracion";
						$oField->setMatrix($this->oDatabase->getMatrix($cSql));
					break;
					case 'cMotivo':
						$oField->setEditor();
					break;
			}
 		}
	}
?>